package itemlogdto

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/util/gconv"
	"xr-game-server/core/constants/common"
	"xr-game-server/core/httpserver"
	"xr-game-server/entity"
	"xr-game-server/gamecfg"
)

type GetItemLogReq struct {
	g.Meta   `path:"/getItemLogs" method:"post" summary:"查询物品日志" tags:"物品"`
	RoleId   uint64  `json:"roleId" dc:"角色id"`
	SourceId *uint64 `json:"sourceId" dc:"数据源id"`
	httpserver.CMSQueryReq
}

type ItemLogDto struct {
	Id          string `json:"id"`
	UpdatedAt   string `json:"updateAt"`
	Old         string `json:"old"`
	Current     string `json:"current"`
	Fail        string `json:"fail"`
	SourceId    uint64 `json:"sourceId"`
	Name        string `json:"name"`
	Val         string `json:"val"`
	ItemName    string `json:"itemName"`
	AddTypeName string `json:"addTypeName"`
}

func NewItemLogDto(itemLog *entity.ItemLog, itemSource *gamecfg.ItemSourceCfg, itemCfg *gamecfg.ItemCfg) *ItemLogDto {
	itemLogDto := &ItemLogDto{}
	gconv.Struct(itemLog, itemLogDto)
	if itemSource != nil {
		itemLogDto.Name = itemSource.Name
	}
	itemLogDto.UpdatedAt = itemLog.UpdatedAt.Format("2006-01-02 15:04:05")
	if itemCfg != nil {
		itemLogDto.ItemName = itemCfg.Name
	}
	if itemLog.TypeId == common.Zero {
		itemLogDto.AddTypeName = "增加"
	} else {
		itemLogDto.AddTypeName = "减少"
	}
	return itemLogDto
}
